package CTable;
import javax.swing.*;
import javax.swing.table.*;

import java.awt.*;
public class CTable extends JTable {
 public CMap map;
 public CTable(CMap cmp, TableModel tbl) {
  super(tbl);
  map = cmp;
  setUI(new CTUI());
 }
 public Rectangle getCellRect(int row, int column, boolean includeSpacing) {
	 
	 Rectangle r1 = new Rectangle(0,0,1,1);
	 
	 try{
		  // required because getCellRect is used in JTable constructor
		  if (map == null)
		   return super.getCellRect(row, column, includeSpacing);
		  // add widths of all spanned logical cells
		  int sk = map.visibleCell(row, column);
		  //Rectangle r1 = super.getCellRect(row, sk, includeSpacing);
		  r1 = super.getCellRect( sk, column, includeSpacing);
		  if (map.span( sk, column ) != 1)
		   for (int i = 1; i < map.span( sk, column ); i++) {
		    //r1.width += getColumnModel().getColumn(sk + i).getWidth();
		    r1.height += this.getRowHeight( sk + i );
		   }
		  return r1;
		 
	 }catch(Exception e){
		 
		 e.printStackTrace();
		 return r1;
	 }
	 
	 
	 

 }
 public int rowAtPoint(Point p) {
	 
	 
	 
	 try{
		  int x = super.columnAtPoint(p);
		  // -1 is returned by columnAtPoint if the point is not in the table
		  if (x < 0)
		   return x;
		  int y = super.rowAtPoint(p);
		  return map.visibleCell(y, x);
		 
	 }catch(Exception e){		 
		 e.printStackTrace();
		 return -1;
	 }
	 

 }
}